package py.edu.ucom.poo.waterloo.agente;

import py.edu.ucom.poo.waterloo.Ficha;
import py.edu.ucom.poo.waterloo.WaterlooApplicationException;
import py.edu.ucom.poo.waterloo.WaterlooLogicException;
import py.edu.ucom.poo.waterloo.Tablero;

public class AgenteAntonio extends AgenteTest{
	
    /**
     * 
     * @param e
     * @param a
     */
    @Override
	public void asignarPeso(Estado e,Agente a)
    {
        int piezasPadre = e.getPiezasAntes();
        int piezasHijo = e.getPiezas();
        if (piezasHijo < piezasPadre){
            e.setPeso(2);
        }
        if (piezasHijo == piezasPadre){
            e.setPeso(1);
        }
        if (piezasHijo > piezasPadre){
            e.setPeso(1);
        }
        if (this.sandBoxInterface.hayFicha(e.getM().getDestino().getPosX(),e.getM().getDestino().getPosX())== true)
        	e.setPeso(10);
        
        Ficha f=e.getM().getOrigen().getFicha();
        if (f!=null){
     	   e.setPeso(-5*(f.getVisitaAgente(e.getM().getOrigen().getPosX(),e.getM().getOrigen().getPosY())));
        }
        try {
			if(a.sandBoxInterface.getValor(e.getM().getOrigen().getFicha(), a)>6){
				e.setPeso(10);
			}
		} catch (WaterlooLogicException e1) {
			//e1.printStackTrace();
		} catch (WaterlooApplicationException e1) {
			//e1.printStackTrace();
		}
    }

//    private void duplicarTablero (Tablero t)
//    {
//        Movimiento mov;
//        Casilla casDestino;
//        Casilla casOrigen;
//        Tablero tabHack  = new Tablero();
//        Agente ag = null;
//        Ficha f;
//        int indice = 0;
//        try {
//            @SuppressWarnings("unchecked")
//            Class cl = Class.forName("py.edu.ucom.poo.waterloo.SandBox");
//            Object obj = cl.newInstance();
//            Field[] m = cl.getDeclaredFields();
//            for (indice=0 ; indice < m.length; indice++){
//                System.out.println(m[indice].getName());
//                if (m[indice].getName().compareTo(("tableroJuego"))==0){
//                m[indice].setAccessible(true);
//                    tabHack = (Tablero) m[indice].get(obj);
//                break;
//                }
//            }
//            //f = new Ficha(1, 1);
//            System.out.println(tabHack.getCasillaDelTablero(9, 9).getFicha().getValor());
//            //sandBoxInterface.getTablero(t, m)
//
////          System.out.println(t.getCasillaDelTablero(0, 0).getFicha().getRango());
//        } catch (InstantiationException ex) {
//            Logger.getLogger(AgenteAntonio.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (IllegalAccessException ex) {
//            Logger.getLogger(AgenteAntonio.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (IllegalArgumentException ex) {
//            Logger.getLogger(AgenteAntonio.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (ClassNotFoundException ex) {
//            Logger.getLogger(AgenteAntonio.class.getName()).log(Level.SEVERE, null, ex);
//        }catch(Exception x){
//            x.printStackTrace();
//        }
//            
//    }
    
    @Override
    public Tablero ubicarFichas(Ficha[] f, Tablero t)
    {
        this.setFicha(f);
        this.color = f[0].getColor();
        //duplicarTablero(t);
        setMapaInterno(armarTableroInicial(t, f, 5));
        return mapaInterno;
    }
	

}
